動機
nowはCLIを提供していてくれてすごく便利なんですけど、ログインするのに入力が必要な感じなのでcliだけで自動処理させようとか思っても無理です。APIはあるので、一時期自作してましたがメンテナンスが面倒くさいのでやっぱりどうしても公式のを使いたい。
5分で作れる
方法は以下の通り
公式のnodeイメージを使ってコンテナを走らせる
中でnowにログイン
docker commit
DockerHubへ
push
DockerHubへプッシュ前にプライベートリポジトリを作っておくのと、docker login
はしておく必要があります。
コンテナを走らせる
以下のようなコマンドで立ち上げて中に入ります。--name
には分かりやすい名前を付けるといいです。
docker run -it --rm --name now node:10 /bin/sh
now
にログイン
中にはいったらまずnow
コマンドをインストール。そしてnow login
と実行するとメールアドレスを聞かれるので入力して認証します。
yarn global add now
# [1/4] Resolving packages...
# [2/4] Fetching packages...
# [3/4] Linking dependencies...
# [4/4] Building fresh packages...
# success Installed "now@11.4.0" with binaries:
# - now
now login
# > Enter your email:
認証が終わった直後の状態をイメージ化
ここまで終わったら一旦コンテナから抜けます。抜ける方法はctrl+p``ctrl+q
です。exit
しちゃったりしたら最初からです。
そしてdocker commit
します。以下のコマンドはnow
という名前のコンテナからnju33/now
というイメージを作るというような意味です。名前はDockerHub上に作ったリポジトリと同じにします。
docker commit now nju33/now
できたら以下のコマンドで出てくるか確認します。
docker image ls
# REPOSITORY TAG IMAGE ID CREATED SIZE
# nju33/now latest xxxxxxxxxxxx 3 days ago 790MB
DockerHubへプッシュ
以下のようにイメージ名を指定してpush
するだけです。
docker push nju33/now
使用例
# 一覧
docker run --rm nju33/now now ls
# static deploy
docker run -it --rm -v `pwd`/src:/root/src nju33/now now /root/src